1. 题目

给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

例如: 给定二叉树 [3,9,20,null,null,15,7],

  3
 / \
 9  20
    /  \
   15   7

返回其自底向上的层次遍历为:

[ [15,7], [9,20], [3] ]

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题思路

利用队列

二叉树的层次遍历

3. 代码

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    vector<vector<int>> levelOrderBottom(TreeNode* root) {
        vector< vector<int> > res;
        if(!root) return res;
        queue<TreeNode*> Q;
        Q.push(root);
        while(!Q.empty()){
            int sz = Q.size();
            vector<int> vec;
            TreeNode* tn;
            while(sz--){
                tn = Q.front();
                Q.pop();
                if(tn->left) Q.push(tn->left);
                if(tn->right) Q.push(tn->right);
                vec.push_back(tn->val);
            }
            res.insert(res.begin(),vec);
        }
        return res;
    }
};

results matching ""

    No results matching ""